package com.atguigu.gmall.pms.api;

import com.atguigu.gmall.common.bean.PageParamVo;
import com.atguigu.gmall.common.bean.ResponseVo;
import com.atguigu.gmall.pms.entity.*;
import com.atguigu.gmall.pms.vo.ItemGroupVo;
import com.atguigu.gmall.pms.vo.SaleAttrValueVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import java.util.List;

public interface GmallPmsApi {

    @GetMapping("pms/category/all/parent/{pid}")   // 7777777777777
    public ResponseVo<List<CategoryEntity>> queryCategoriesWithSubByPid(@PathVariable("pid") Long pid);

    @GetMapping("pms/spu/{id}")         // 222222222
    @ApiOperation("详情查询")
    public ResponseVo<SpuEntity> querySpuById(@PathVariable("id") Long id);

    @GetMapping("pms/category/parent/{parentId}")       // 88888888888
    public ResponseVo<List<CategoryEntity>> queryCategoriesByPid(@PathVariable("parentId") Long pId);

    //    1.分批查询spu
    @PostMapping("pms/spu/json")           //11111111111
    ResponseVo<List<SpuEntity>> querySpuByPageJson(@RequestBody PageParamVo paramVo);

    //	2.根据spuId查询spu下的sku
    @GetMapping("pms/sku/spu/{spuId}")        // 333333333
    public ResponseVo<List<SkuEntity>> querySkusBySpuId(@PathVariable("spuId") Long spuId);

    //5.根据分类的id查询分类
    @GetMapping("pms/category/{id}")         //  6666666666
    public ResponseVo<CategoryEntity> queryCategoryById(@PathVariable("id") Long id);

    //4.根据品牌id查询品牌
    @GetMapping("pms/brand/{id}")              //  555555555555
    public ResponseVo<BrandEntity> queryBrandById(@PathVariable("id") Long id);

    //    6.根据cid和spuId查询基本类型的检索属性和值
    @GetMapping("pms/spuattrvalue/search/attr/value/{cid}")      // 10  10  10
    public ResponseVo<List<SpuAttrValueEntity>> querySearchAttrValueByCidAndSpuId
    (@PathVariable("cid") Long cid,
     @RequestParam("spuId") Long spuId);

    //7.根据cid和skuId查询销售类型的检索属性和值
    @GetMapping("pms/skuattrvalue/search/attr/value/{cid}")      // 11 11 11 11
    public ResponseVo<List<SkuAttrValueEntity>> querySearchAttrValueByCidAndSkuId(
            @PathVariable("cid") Long cid,
            @RequestParam("skuId") Long skuId);




// 1.根据skuId查询sku信息
    @GetMapping("pms/sku/{id}")
    @ApiOperation("详情查询")
    public ResponseVo<SkuEntity> querySkuById(@PathVariable("id") Long id);
//2根据三级分类的id查询一二三级分类     单表查询
    @GetMapping("pms/category/lvl123/{cid3}")
    public ResponseVo<List<CategoryEntity>>queryLvl123CategoriesByCid3(@PathVariable("cid3")Long cid);

    @GetMapping("pms/skuimages/sku/{skuId}")       // 15 15
    public ResponseVo<List<SkuImagesEntity>> queryImagesBySkuId(@PathVariable("skuId")Long skuId);
    // 12.根据cid和spuId及skuId查询分组及组下的规格参数和值
    @GetMapping("pms/attrgroup/attr/value/category/{cid}")  //17 17
    public ResponseVo<List<ItemGroupVo>>queryGroupWithAttrValuesByCidAndSpuIdAndSkuId(
            @PathVariable("cid")Long cid,
            @RequestParam("spuId")Long spuId,
            @RequestParam("skuId")Long skuId
    );

    // 根据sku里spuId查询spu下所有sku的销售属性
    @GetMapping("pms/skuattrvalue/spu/{spuId}") // 12 12  12 12
    public ResponseVo<List<SaleAttrValueVo>> querySaleAttrValuesBySpuId(@PathVariable("spuId")Long spuId);

    // 9.根据skuId查询当前sku的销售属性 V {3: '暗夜黑', 4: '12G', 5: '256G'}v
    @GetMapping("pms/skuattrvalue/sku/{skuId}")//13  13 13
    public ResponseVo<List<SkuAttrValueEntity>> querySaleAttrValuesBySkuId(@PathVariable("skuId")Long skuId);
    // .根据spuId查询spu下所有销售属性组合和skuId的映射关系
    @GetMapping("pms/skuattrvalue/mapping/{spuId}")   //14 14
    public ResponseVo<String> queryMappingBySpuId(@PathVariable("spuId")Long spuId);
//    根据spuId查询spu的描述信息 V
    @GetMapping("pms/spudesc/{spuId}")  // 16
    public ResponseVo<SpuDescEntity> querySpuDescById(@PathVariable("spuId") Long spuId);



}